﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Capa_Entidad;
using Capa_Negocio_Interface;
using Capa_Negocio_Facade;
public partial class Clinica_wfAtencionEnfermedadActual : System.Web.UI.Page
{
    IFacadeRegistrarAtencion objFacadeAtencion = new FacadeRegistrarAtencion();
    private static String valorOperacion;
    private static String msg;
  

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {


            if (Session["Ate_Operacion"] == null)
            {
                Response.Redirect("wfAtencionListado.aspx");
                return;
            }





            if (Session["Ate_Operacion"].ToString() == "M")
            {

                valorOperacion = "M";
                Listar(Convert.ToInt32(Session["IDAtencion"]));
               
            }
            else if (Session["Ate_Operacion"].ToString() == "C")
            {

                valorOperacion = "N";

            }
        }

    }

    private void Listar(int idAtencion)
    {
        try
        {


            List<ATE_ENFERMEDAD_ACTUAL> listaAtencion = new List<ATE_ENFERMEDAD_ACTUAL>();
            listaAtencion = objFacadeAtencion.listarEnfermedadActual(idAtencion);
       
            if (listaAtencion.Count() == 0)
            {
                valorOperacion = "N";
                return;
            }

                radioButtonsInicio.Value = listaAtencion[0].ENA_FLAG_INICIO;
                spinEditDias.Value = listaAtencion[0].ENA_TIEMPO_ENFERMEDAD_DIAS;
                spinEditMeses.Value = listaAtencion[0].ENA_TIEMPO_ENFERMEDAD_MESES;
                spinEditAnios.Value = listaAtencion[0].ENA_TIEMPO_ENFERMEDAD_ANIOS;
                radioButtonsCurso.Value = listaAtencion[0].ENA_FLAG_CURSO;
                radioButtonsEvolucion.Value = listaAtencion[0].ENA_FLAG_EVOLUCION;
                txtSintomaPrincipalEnfermedadActual.Text = listaAtencion[0].ENA_SINTOMA_PRINCIPAL;
                txtRelatoCronologicoEvolucionSintomasEnfermedadActual.Text = listaAtencion[0].ENA_DESCRIPCION_EVOLUCION_SINTOMAS;
                txtApetitoEnfermedadActual.Text = listaAtencion[0].ENA_BIOLOGICAS_APETITO;
                txtHecesEnfermedadActual.Text = listaAtencion[0].ENA_BIOLOGICAS_HECES;
                txtPesoEnfermedadActual.Text = listaAtencion[0].ENA_BIOLOGICAS_PESO;
                txtSedEnfermedadActual.Text = listaAtencion[0].ENA_BIOLOGICAS_SED;
                txtOrinaEnfermedadActual.Text = listaAtencion[0].ENA_BIOLOGICAS_ORINA;

            
        }
        catch (Exception ex)
        {
            lblMensaje.Text = "ERROR:" + ex.Message;
            pcMensaje.ShowOnPageLoad = true;
        }


    }

    protected void btnCancelar_Click(object sender, EventArgs e)
    {
        Response.Redirect("wfAtencionListado.aspx", true);
    }

    protected void btnAceptarEnfermedadActual_Click(object sender, EventArgs e)
    {
        if (Session["Ate_Operacion"]==null)
        {
            return;
        }
        //if (Session["Ate_Operacion2"].ToString() == "P")
        //{
        //    return;
        //}
        if (VerificaCamposVacios())
        {
            lblMensaje.Text = msg;
            pcMensaje.ShowOnPageLoad = true;
            return;
        }

        Grabar();
    }

    public bool VerificaCamposVacios()
    {
        bool Bool = false;

        if (Convert.ToInt32(spinEditDias.Value.ToString()) < 0)
        {
            Bool = true;
            msg = "Los dias especificados no pueden ser negativos.";
        }

        else if (Convert.ToInt32(spinEditMeses.Value.ToString()) < 0)
        {
            Bool = true;
            msg = "Los meses especificados no pueden ser negativos.";
        }
        else if (Convert.ToInt32(spinEditAnios.Value.ToString()) < 0)
        {
            Bool = true;
            msg = "Los años especificados no pueden ser negativos.";
        }
        else if (txtSintomaPrincipalEnfermedadActual.Text.Equals(""))
        {
            Bool = true;
            msg = "Debe especificar sintomas para la atención actual.";
        }
        else if (txtRelatoCronologicoEvolucionSintomasEnfermedadActual.Text.Equals(""))
        {
            Bool = true;
            msg = "Debe especificar una descripción cronológica de los síntomas.";
        }
        else if (radioButtonsInicio.SelectedIndex == -1) {

            Bool = true;
            msg = "Elige inicio";
        }
        else if (radioButtonsCurso.SelectedIndex == -1) {
            Bool = true;
            msg = "Elige curso";

        }
        else if (radioButtonsEvolucion.SelectedIndex == -1) {

            Bool = true;
            msg = "Elige evolución";
        
        }
        else if (txtApetitoEnfermedadActual.Text.Equals("") ||
            txtHecesEnfermedadActual.Text.Equals("") ||
            txtPesoEnfermedadActual.Text.Equals("") ||
            txtSedEnfermedadActual.Text.Equals("") ||
            txtOrinaEnfermedadActual.Text.Equals(""))
        {
            Bool = true;
            msg = "Debe especificar información  de las funciones biologicas.";
        }
        return Bool;
    }

    public void Grabar()
    {

        try
        {

            ATE_ENFERMEDAD_ACTUAL nuevaEnfermedadActual = new ATE_ENFERMEDAD_ACTUAL();

            nuevaEnfermedadActual.ENA_FLAG_INICIO = radioButtonsInicio.Value.ToString(); // 1:Subito 2:brusco 3:Gradual 
            nuevaEnfermedadActual.ENA_TIEMPO_ENFERMEDAD_DIAS = Convert.ToInt32(spinEditDias.Text);
            nuevaEnfermedadActual.ENA_TIEMPO_ENFERMEDAD_MESES = Convert.ToInt32(spinEditMeses.Text);
            nuevaEnfermedadActual.ENA_TIEMPO_ENFERMEDAD_ANIOS = Convert.ToInt32(spinEditAnios.Text);
            nuevaEnfermedadActual.ENA_FLAG_CURSO = radioButtonsCurso.Value.ToString(); //1:Progresivo 2:Estacionario 3:Episodico 4:Remisión
            nuevaEnfermedadActual.ENA_FLAG_EVOLUCION = radioButtonsEvolucion.Value.ToString(); //1:Agudo 2:Subagudo 3:crónico
            nuevaEnfermedadActual.ENA_SINTOMA_PRINCIPAL = txtSintomaPrincipalEnfermedadActual.Text.ToString();
            nuevaEnfermedadActual.ENA_DESCRIPCION_EVOLUCION_SINTOMAS = txtRelatoCronologicoEvolucionSintomasEnfermedadActual.Text;
            nuevaEnfermedadActual.ENA_BIOLOGICAS_APETITO = txtApetitoEnfermedadActual.Text;
            nuevaEnfermedadActual.ENA_BIOLOGICAS_HECES = txtHecesEnfermedadActual.Text;
            nuevaEnfermedadActual.ENA_BIOLOGICAS_PESO = txtPesoEnfermedadActual.Text;
            nuevaEnfermedadActual.ENA_BIOLOGICAS_SED = txtSedEnfermedadActual.Text;
            nuevaEnfermedadActual.ENA_BIOLOGICAS_ORINA = txtOrinaEnfermedadActual.Text;
            nuevaEnfermedadActual.ATE_ID_ATENCION = Convert.ToInt32(Session["IDAtencion"]);

            if (valorOperacion == "N")
            {


                if (objFacadeAtencion.insertarEnfermedadActual(nuevaEnfermedadActual))
                {
                    lblMensaje.Text = "Se grabó correctamente";
                    pcMensaje.ShowOnPageLoad = true;

                }
                else
                {
                    lblMensaje.Text = "ERROR";
                    pcMensaje.ShowOnPageLoad = true;

                }
            }
            else if (valorOperacion == "M")
            {

                if (objFacadeAtencion.modificarEnfermedadActual(nuevaEnfermedadActual))
                {
                    lblMensaje.Text = "Se actualizó correctamente";
                    pcMensaje.ShowOnPageLoad = true;

                }
                else
                {
                    lblMensaje.Text = "ERROR";
                    pcMensaje.ShowOnPageLoad = true;

                }

            }

            if (Session["IdCita"].ToString () != "")
            {
                objFacadeAtencion.ActualizarEstadoCita(Convert.ToInt16(Session["IdCita"].ToString ()), 3);
            }


        }
        catch (Exception ex)
        {

            lblMensaje.Text = "ERROR: " + ex.Message;
            pcMensaje.ShowOnPageLoad = true;
        }


    }

}